package de.cbf.cam.dsa.tavern.carte;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

import de.cbf.cam.dsa.tavern.carte.model.persistence.interfaces.IPersisterIngredients;

/**
 * The activator class controls the plug-in life cycle
 */
public class Activator extends AbstractUIPlugin {
	/*
	 * Extension point IDs 
	 */
	private static final String IngredientPersistence_ID    = "de.cbf.cam.dsa.tavern.IngredientsPersistence";
	
	// The plug-in ID
	public static final String PLUGIN_ID = "de.cbf.cam.dsa.tavern.cartegenerator"; //$NON-NLS-1$

	// The shared instance
	private static Activator plugin;
	
	private List<IPersisterIngredients> ingredientsPersisters = new ArrayList<IPersisterIngredients>();
	
	/**
	 * The constructor
	 */
	public Activator() {
	}

	/*
	 * (non-Javadoc)
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
	 */
	public void start(BundleContext context) throws Exception {
		super.start(context);
		plugin = this;
		registerIngredientPersisters();
	}

	private void registerIngredientPersisters() {	
		//evaluating of extension point(ingredientPersister) registered extensions
		try {
			IConfigurationElement[] config = Platform.getExtensionRegistry()
					.getConfigurationElementsFor(IngredientPersistence_ID);
			for (IConfigurationElement configurationElement : config) {
				final Object o = configurationElement.createExecutableExtension("class");
				if (o instanceof IPersisterIngredients) {
					//get attributes 
					IPersisterIngredients persister =(IPersisterIngredients) o;				
					ingredientsPersisters.add(persister);				
				}
			}
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}	
	}

	/*
	 * (non-Javadoc)
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
	 */
	public void stop(BundleContext context) throws Exception {
		plugin = null;
		super.stop(context);
	}

	/**
	 * Returns the shared instance
	 *
	 * @return the shared instance
	 */
	public static Activator getDefault() {
		return plugin;
	}

	/**
	 * Returns an image descriptor for the image file at the given
	 * plug-in relative path
	 *
	 * @param path the path
	 * @return the image descriptor
	 */
	public static ImageDescriptor getImageDescriptor(String path) {
		return imageDescriptorFromPlugin(PLUGIN_ID, path);
	}
	
	
	//allgemeines TODO	
}
